function registerLanguage(monaco) {
    monaco.languages.register({
      id: 'log'
    });
    monaco.languages.setMonarchTokensProvider('log', {
      tokenizer: {
        root: [
          [/(^[=a-zA-Z].*|\d\s.*)/, 'log-normal'],
          [/\sERROR\s.*/, 'log-error'],
          [/\sWARN\s.*/, 'log-warn'],
          [/\sINFO\s.*/, 'log-info'],
          [
            /^([0-9]{4}||[0-9]{2})-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]{3})?/,
            'log-date'
          ],
          [
            /^[0-9]{2}\/[0-9]{2}\/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]{3})?/,
            'log-date'
          ],
          [/(^\*\*Waiting queue:.*)/, 'log-info'],
          [/(^\*\*result tips:.*)/, 'log-info']
        ]
      }
    });
    monaco.editor.defineTheme('log', {
      base: 'vs',
      inherit: true,
      rules: [{
          token: 'log-info',
          foreground: '4b71ca'
        },
        {
          token: 'log-error',
          foreground: 'ff0000',
          fontStyle: 'bold'
        },
        {
          token: 'log-warn',
          foreground: 'FFA500'
        },
        {
          token: 'log-date',
          foreground: '008800'
        },
        {
          token: 'log-normal',
          foreground: '808080'
        }
      ],
      colors: {
        'editor.lineHighlightBackground': '#ffffff',
        'editorGutter.background': '#f7f7f7'
      }
    });

  }

  export default registerLanguage;
